<?php

/**
 * Permite hacer operaciones con la tabla persona de la base de datos
 * @package simertweb 
 * @subpackage models 
 * @category Administración, Recaudación
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class Mpersona extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    /**
     * Verifica si existe una persona 
     * @return boolean
     */
    function validar_persona() {
        $this->db->where('cedula', $_POST["cedula"]); //busca la persna segun la cedula ingresada
        $query = $this->db->get('persona');
        if ($query->num_rows() == 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * Para modificar verifica si una persona existe
     * @param type $id es el id de persona
     * @return boolean
     */
    function validar_persona_modificar($id) {
        $this->db->where('idPersona !=', $id);
        $this->db->where('cedula', $_POST["cedula"]); //busca la persna segun la cedula ingresada
        $query = $this->db->get('persona');
        if ($query->num_rows() == 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * Obtiene las perosnas exoneradas del pago del servicio de estacionamiento
     * @param type $idexonerado es el id de la persona
     * @return type array
     */
    function listar_persona_exonerado($idexonerado) {
        $this->db->where('idPersona', $idexonerado);
        $query = $this->db->get('persona');
        return $query->row();
    }

    /**
     * Guarda una persona exonerada
     */
    function guaradar_persona_exonerado() {
        $data = array(//obtiene los datos del formulario y los almacena en las variables
            'nombre' => strtoupper($_POST['nombres']),
            'apellido' => strtoupper($_POST['apellidos']),
            'cedula' => $_POST['cedula']
        );
        $this->db->insert('persona', $data); //guarda los datos en la bd
    }

    /**
     * Guarda una persona
     */
    function guardarPersona() {
        $data = array(//obtiene los datos del formulario y los almacena en las variables
            'nombre' => strtoupper($_POST['nombres']),
            'apellido' => strtoupper($_POST['apellidos']),
            'cedula' => $_POST['cedula'],
            'direccion' => strtoupper($_POST['direccion']),
            'telefono' => $_POST['telefono'],
            'correo' => strtolower($_POST['correo'])
        );
        $this->db->insert('persona', $data); //guarda los datos en la bd
    }

    /**
     * Obtiene id de una persona
     * @param type $id es el id de empleado
     * @return type int
     */
    function obtener_idPersona($id) {
        $this->db->where('idEmpleado', $id);
        $query = $this->db->get('empleado')->row()->idPersona;
        return $query;
    }

    //recibe el id de exonerad y devuelve el id de persona
    function obtener_idPersona_exonerado($id) {
        $this->db->where('idExonerado', $id);
        $query = $this->db->get('exonerado')->row()->Persona_idPersona;
        return $query;
    }

    /**
     * Obtiene los datos de una persona
     * @param type $query es el id de una persona
     * @return type array
     */
    function datosPersona($query) {
        $query = $query->row()->idPersona;
        $this->db->where('idPersona', $query);
        $query2 = $this->db->get('persona')->result();
        return $query2;
    }

    /**
     * Obtiene los nombres de uan persona
     * @param type $idPersona es elid de uns persona
     * @return type string
     */
    function obtener_nombre($idPersona) {
        $this->db->where('idPersona', $idPersona);
        $nombre = $this->db->get('persona')->row()->nombre;
        $this->db->where('idPersona', $idPersona);
        $apellido = $this->db->get('persona')->row()->apellido;
        return ucfirst(strtolower($nombre)) . " " . ucfirst(strtolower($apellido));
    }

    
    function obtener_id2($apellido) {
        $this->db->where('apellido', $apellido);
        $query=$this->db->get('persona')->row()->idPersona;  
        return $query;    
    }
    /**
     * Actualiza los datos de una persona
     * @param type $id es el id de persona
     * @param type $nombres son los nombres
     * @param type $apellidos son los apellidos
     * @param type $cedula es la cédula de identidad
     * @param type $direccion es la dirección
     * @param type $telefono es el teléfono
     * @param type $correo es el correo electrónico
     */
    function actualizar_persona($id, $nombres, $apellidos, $cedula, $direccion, $telefono, $correo) {
        $data = array(
            'nombre' => strtoupper($nombres),
            'apellido' => strtoupper($apellidos),
            'cedula' => $cedula,
            'direccion' => strtoupper($direccion),
            'telefono' => $telefono,
            'correo' => $correo
        );
        $this->db->where('idPersona', $id);
        $this->db->update('persona', $data);
    }

    /**
     * Actualiza los datos de una persona exonerada
     * @param type $id es el id de persona
     * @param type $nombres son los nombres
     * @param type $apellidos son los apellidos 
     * @param type $cedula es la cédula de identidad
     */
    function actualizar_persona_exonerada($id, $nombres, $apellidos, $cedula) {
        $data = array(
            'nombre' => strtoupper($nombres),
            'apellido' => strtoupper($apellidos),
            'cedula' => $cedula
        );
        $this->db->where('idPersona', $id);
        $this->db->update('persona', $data);
    }


    //El decimo Digito es un resultante de un calculo
    //Se trabaja con los 9 digitos de la cedula
    //Cada digito de posicion impar se lo duplica, si este es mayor que 9 se resta 9
    //Se suman todos los resultados de posicion impar
    //Ahora se suman todos los digitos de posicion par
    //se suman los dos resultados
    //se resta de la decena inmediata superior
    //este es el decimo digito
    //si la suma nos resulta 10, el decimo digito es cero
    /**
     * Verifica si un número de cédula de identidad es valida
     * @param type $strCedula es el número de cédula de identidad
     * @return boolean|string
     */
    function validarCI($strCedula) {
        if (is_null($strCedula) || empty($strCedula)) {//compruebo si que el numero enviado es vacio o null
//            echo "Por Favor Ingrese la Cedula";
        } else {//caso contrario sigo el proceso
            if (is_numeric($strCedula)) {
                $total_caracteres = strlen($strCedula); // se suma el total de caracteres
                if ($total_caracteres == 10) {//compruebo que tenga 10 digitos la cedula
                    $nro_region = substr($strCedula, 0, 2); //extraigo los dos primeros caracteres de izq a der
                    if ($nro_region >= 1 && $nro_region <= 24) {// compruebo a que region pertenece esta cedula//
                        $ult_digito = substr($strCedula, -1, 1); //extraigo el ultimo digito de la cedula
                        //extraigo los valores pares//
                        $valor2 = substr($strCedula, 1, 1);
                        $valor4 = substr($strCedula, 3, 1);
                        $valor6 = substr($strCedula, 5, 1);
                        $valor8 = substr($strCedula, 7, 1);
                        $suma_pares = ($valor2 + $valor4 + $valor6 + $valor8);
                        //extraigo los valores impares//
                        $valor1 = substr($strCedula, 0, 1);
                        $valor1 = ($valor1 * 2);
                        if ($valor1 > 9) {
                            $valor1 = ($valor1 - 9);
                        } else {
                            
                        }
                        $valor3 = substr($strCedula, 2, 1);
                        $valor3 = ($valor3 * 2);
                        if ($valor3 > 9) {
                            $valor3 = ($valor3 - 9);
                        } else {
                            
                        }
                        $valor5 = substr($strCedula, 4, 1);
                        $valor5 = ($valor5 * 2);
                        if ($valor5 > 9) {
                            $valor5 = ($valor5 - 9);
                        } else {
                            
                        }
                        $valor7 = substr($strCedula, 6, 1);
                        $valor7 = ($valor7 * 2);
                        if ($valor7 > 9) {
                            $valor7 = ($valor7 - 9);
                        } else {
                            
                        }
                        $valor9 = substr($strCedula, 8, 1);
                        $valor9 = ($valor9 * 2);
                        if ($valor9 > 9) {
                            $valor9 = ($valor9 - 9);
                        } else {
                            
                        }

                        $suma_impares = ($valor1 + $valor3 + $valor5 + $valor7 + $valor9);
                        $suma = ($suma_pares + $suma_impares);
                        $dis = substr($suma, 0, 1); //extraigo el primer numero de la suma
                        $dis = (($dis + 1) * 10); //luego ese numero lo multiplico x 10, consiguiendo asi la decena inmediata superior
                        $digito = ($dis - $suma);
                        if ($digito == 10) {
                            $digito = '0';
                        } else {
                            
                        }//si la suma nos resulta 10, el decimo digito es cero
                        if ($digito == $ult_digito) {//comparo los digitos final y ultimo
                            return TRUE;
//                            echo "Cedula Correcta";
                        } else {
                            return "Cedula Incorrecta";
                        }
                    } else {
                        return "Cedula Incorrecta";
                    }
                    return "Cedula Incorrecta";
                    ;
                } else {
                    return "Cedula Incorrecta";
                }
            } else {
                return "Cedula Incorrecta";
            }
        }
    }

}

?>
